AWS Configルールを全リージョンまとめてCLIで削除してみた
はじめに
AWS Configのルールを全リージョン分削除しようとしたところ、マネジメントコンソール上から行うのは少し手間でしたのでCLIで行うことにしました。 無事できましたので、記事化しておこうと思います。
前提
- jq を利用します
- CLIはv1系を利用
- credentialの設定が済んでいるものとします
やってみたこと
1.コマンドの調査
describe-config-rules
ルールの一覧を取得できます
$ aws configservice describe-config-rules
以下のような内容が出力されます
{ "ConfigRules": [ { "ConfigRuleState": "ACTIVE", "Description": "Evaluates whether EC2 instances are the t2.micro type.", "ConfigRuleName": "InstanceTypesAreT2micro", "ConfigRuleArn": "arn:aws:config:us-east-1:xxxxxxxx:config-rule/config-rule-abcdef", "Source": { "Owner": "CUSTOM_LAMBDA", "SourceIdentifier": "arn:aws:lambda:us-east-1:xxxxxxxx:function:InstanceTypeCheck", "SourceDetails": [ { "EventSource": "aws.config", "MessageType": "ConfigurationItemChangeNotification" } ] }, "InputParameters": "{\"desiredInstanceType\":\"t2.micro\"}", "Scope": { "ComplianceResourceTypes": [ "AWS::EC2::Instance" ] }, "ConfigRuleId": "config-rule-abcdef" } ] }
describe-regions
以下のコマンドでリージョンの一覧が取得できます。
$ aws ec2 describe-regions
{ "Regions": [ { "Endpoint": "ec2.eu-north-1.amazonaws.com", "RegionName": "eu-north-1", "OptInStatus": "opt-in-not-required" }, : ] }
次のようにすると、有効なリージョン名だけが取得できます。
$ aws ec2 describe-regions --no-all-regions | jq .Regions[].RegionName | tr -d '"'
eu-north-1 ap-south-1 eu-west-3 eu-west-2 eu-west-1 ap-northeast-2 me-south-1 ap-northeast-1 sa-east-1 ca-central-1 ap-southeast-1 ap-southeast-2 eu-central-1 us-east-1 us-east-2 us-west-1 us-west-2
delete-config-rule
以下のコマンドでルールを削除できます。
$ aws configservice delete-config-rule --config-rule-name ${ConfigRuleName}
※ $(ConfigRuleName)の部分にはルール名をセットしてください
2.スクリプトの作成
調べたコマンドを組み合わせて、全リージョンのルールをまとめて消すスクリプトを作ってみました。
RegionNames=$(aws ec2 describe-regions --no-all-regions | jq .Regions[].RegionName | tr -d '"') for RegionName in ${RegionNames} do echo "${RegionName} リージョンの設定を開始します" ConfigRuleNames=$(aws configservice describe-config-rules --region ${RegionName} | jq .ConfigRules[].ConfigRuleName | tr -d '"') for ConfigRuleName in ${ConfigRuleNames} do echo "${ConfigRuleName} ルールを削除しました" $(aws configservice delete-config-rule --config-rule-name ${ConfigRuleName} --region ${RegionName}); done echo "${RegionName} リージョンの設定を終了します" done
これでまとめて全リージョンのルールを削除することができました。
おわりに
だれかの参考になれば幸いです。
参考資料
- configservice — AWS CLI 1.18.61 Command Reference https://docs.aws.amazon.com/cli/latest/reference/configservice/index.html
- describe-regions — AWS CLI 1.18.61 Command Reference https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-regions.html